In object oriented programming environments, it can be challenging to extend object class definitions to modify a program or create new programs. While techniques exist for specifying how to generate derived object classes from base object classes, such techniques typically involve programming in which the base classes are tightly coupled to the derived classes.
Such tight coupling inhibits the development and maintenance of program libraries because each time a base library class is extended by an external application, the base library class is modified as well.